Data storage systems are arrangements of hardware and software that may include multiple storage processors coupled to arrays of non-volatile storage devices. In typical operation, the storage processors service storage requests that arrive from client machines. The storage requests specify files of file systems, or other data elements, to be written, read, created, or deleted, for example. The storage processors run software that manages incoming storage requests and performs various data processing tasks to organize and secure client data stored on the non-volatile storage devices.
Many data storage systems employ transaction logs for temporarily persisting changes in file system metadata. For example, a data storage system may receive a request from a client machine to perform an operation (e.g., a write operation) on a file stored in a file system hosted by the data storage system. In response to receiving the request, the data storage system performs the requested operation on data of the file and computes any metadata changes to the file system that must be made to accommodate the operation. The data storage system then prepares the metadata changes in transactions and writes the transactions to a transaction log. Once the transaction log has persistently stored the transactions, the data storage system can acknowledge back to the client that the operation specified in the request is complete. Subsequently, the data storage system can sync the specified metadata changes to persistent metadata structures in the file system. The data storage system can then mark the synced transactions as available to be zeroed or overwritten at some later time, e.g., when the transaction log is running low on space. The transaction log may have a fixed length and may be arranged as a circular buffer or as some other recycling structure.
One conventional type of transaction log stores metadata changes affecting multiple file systems all together in one log. Such “common” transaction logs tag each transaction with a file system identifier (FSID) to allow data storage systems to properly identify the file system to which the respective metadata transaction should be applied.
Another conventional type of transaction log stores metadata transactions on a per-file-system basis as embedded transaction logs within metavolumes supporting respective file systems. Thus, a first metavolume may store a first file system along with an embedded transaction log specific to the first file system, whereas a second metavolume may store a second file system along with an embedded transaction log specific to the second file system.